package com.hzit.order.interceptor;

import cn.hutool.core.util.StrUtil;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

/**
 * 类名：
 * 作者：WF
 * 功能：openfeign在调用过程中，请求头丢失，导致hzit-cart模块中拿不到登录用户信息，此时，就重定向到登录页并返回false，
 *     可能出现类型转换异常！...MessageConverterException...
 */
@Configuration
public class FeignHeaderInterceptor implements RequestInterceptor{

	@Override
	public void apply(RequestTemplate template) {   // 这里的template是open创建的一个新的请求
		//1. 得到原来的请求属性对象
		ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
		//2. 得到老请求对象
		HttpServletRequest request = requestAttributes.getRequest();
		//3. 得到老的请求头中的Cookie部分
		String cookie = request.getHeader("Cookie");
		//4. 如可存在此cookie就设置给新的请求的请求头
		if(StrUtil.isNotBlank(cookie)){
			template.header("Cookie",cookie);
		}
	}
}
